//package self.example.explore.config;
//
//import com.baomidou.mybatisplus.annotation.IdType;
//import com.baomidou.mybatisplus.core.toolkit.StringPool;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.InjectionConfig;
//import com.baomidou.mybatisplus.generator.config.*;
//import com.baomidou.mybatisplus.generator.config.po.TableInfo;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import self.example.explore.util.NonPoolDataSourceInfoParser;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.List;
//import java.util.Objects;
//
//import static self.example.explore.constant.DataSourceConfigInfo.*;
//
///**
// * @author 1.
// * @version 1.0
// * @description:  配置 Mybatis-plus 的代码生成器启动类 --- 演示数据无分模块化 //因为依赖包的替换，导致爆红所以我全部注销了
// * @date 2023/3/31 22:52
// */
//@Deprecated  ///已被弃用
//public class MpGeneratorConfig {
//    public static void main(String[] args) {
//        // 当前工程根目录
//        final String ENGINEER_URL = System.getProperty("user.dir").replaceAll("\\\\","/");
//        // 当前模块
//        final String MODULE_URL = "/mybatis-plus-generator-play";
//        // 当前项目源码
//        final String ROOT_URL = "/src/main/java";
//        // 父包名
//        final String PARENT_DIR = "self.example.explore";
//        // 当前工程项目绝对路径(模块)
//        final String ROOT_MODULE_URL = ENGINEER_URL + MODULE_URL;
//        // 当前工程项目源码所在路径
//        final String PROJECT_ROOT_URL = ROOT_MODULE_URL + ROOT_URL;
//        // xml 文件路径
//        final String XML_URL = ROOT_MODULE_URL + "/src/main/resources/mapper/";
//        //如果模板引擎是 velocity
//        final String VELOCITY_TEMPLATE_PATH = "/templates/mapper.xml.vm";
//        // 如果模板引擎是 freemarker
//        final String FREEMARKER_TEMPLATE_PATH = "/templates/mapper.xml.ftl";
//
//
//        // 获取自动生成器
//        AutoGenerator autoGenerator = new AutoGenerator();
//        // 获取数据源信息解析器
//        NonPoolDataSourceInfoParser parser = new NonPoolDataSourceInfoParser();
//
//        // 全局配置器 globConfig
//        GlobalConfig globConfig = new GlobalConfig();
//        globConfig.setAuthor("1.");
//        //配置输出目录
//        globConfig.setOutputDir(PROJECT_ROOT_URL);
//        //是否打开输出目录
//        globConfig.setOpen(true);
//        //重新生成是否覆盖
//        globConfig.setFileOverride(true);
//        //指定生成的主键的 ID 类型
//        globConfig.setIdType(IdType.AUTO);
//        //限定类名
//        globConfig.setMapperName("%sMapper");
//        globConfig.setServiceName("%sService");
//        globConfig.setServiceImplName("%sServiceImpl");
//        globConfig.setControllerName("%sController");
//        globConfig.setXmlName("%sDao"); //xml文件名
//
//        // 包配置器 packageConfig
//        PackageConfig packageConfig = new PackageConfig();
//        packageConfig.setParent(PARENT_DIR);
//        //配置包名
//        packageConfig.setEntity("po");
//        packageConfig.setMapper("dao");
//        packageConfig.setService("bo");
//        packageConfig.setServiceImpl("bo.impl");
//        packageConfig.setController("controller");
//        //这个地方如果上面配置了parent父包名，就会形成重叠
//        //C:\develop\technology-stack-study\mybatis-plus-generator-play\src\main\java\self\example\explore\
//        //     +  C:\develop\technology-stack-study\mybatis-plus-generator-play\src\main\resource\mapper\DeptDao.xml
////        packageConfig.setXml(XML_URL);
//
//        // 数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig();
//        dataSourceConfig.setDriverName(DRIVER_CLASS_NAME);
//        dataSourceConfig.setUrl(URL);
//        dataSourceConfig.setUsername(USER_NAME);
//        dataSourceConfig.setPassword(PASS_WORD);
//
//        // 自定义配置
//        InjectionConfig injectionConfig = new InjectionConfig() {
//            @Override
//            public void initMap() {
//                // to do nothing
//            }
//        };
//        //配置模板引擎
//        //自定义输出配置
//        List<FileOutConfig> focList = new ArrayList<>();
//        // 自定义配置会被优先输出
//        focList.add(new FileOutConfig(VELOCITY_TEMPLATE_PATH) {
//            @Override
//            public String outputFile(TableInfo tableInfo) {
//                // 自定义输出 xml 文件名 ， 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化！！
//                return XML_URL + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
//            }
//        });
//        injectionConfig.setFileOutConfigList(focList);
//
//        // 配置模板
//        TemplateConfig templateConfig = new TemplateConfig();
////        templateConfig.setXml(VELOCITY_TEMPLATE_PATH);
//        templateConfig.setXml(null);
//
//        // 配置数据库表配置
//        StrategyConfig strategyConfig = new StrategyConfig();
//        //开启驼峰命名，映射表与实体类
//        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//        //表名前缀
////        strategyConfig.setTablePrefix("tb_");
//        //开启驼峰命名，映射字段名和类属性名
//        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
//        //生成 @RestController 控制器
//        strategyConfig.setRestControllerStyle(true);
//        //是否大写命名
//        strategyConfig.setCapitalMode(true);
//        //是否在生成实体时，生成字段注解
//        strategyConfig.setEntityTableFieldAnnotationEnable(true);
//        //开启构建者模型
//        strategyConfig.setChainModel(true);
//        //开启为lombok模型
//        strategyConfig.setEntityLombokModel(true);
//        //指定表
//        strategyConfig.setInclude(Arrays.toString(Objects.requireNonNull(parser.getTableNames()).toArray()));
//
//
//        autoGenerator
//                .setGlobalConfig(globConfig) //全局配置
//                .setPackageInfo(packageConfig) //包配置
//                .setDataSource(dataSourceConfig) //数据源配置
//                .setCfg(injectionConfig) //自定义配置，关于xml文件的生成配置可以直接指定
//                .setTemplate(templateConfig) //模板配置
//                .setStrategy(strategyConfig); //策略配置(数据库表配置)
//
//        //执行代码生成器
//        autoGenerator.execute();
//
//
//    }
//}
